package com.yc.cloud.admin.service;

import com.yc.cloud.admin.dto.SnapshotConfig;
import com.yc.cloud.entity.HwCameraSnapshotStrategy;

/**
 * 抓图策略解析服务接口
 * 
 * @author kinggu
 * @since 2025-10-10
 */
public interface SnapshotStrategyResolver {
    
    /**
     * 获取摄像头的有效抓图策略
     * 优先级：摄像头专属策略 > 全局默认策略
     *
     * @param cameraId 摄像头ID
     * @return 有效的抓图策略，如果没有返回null
     */
    HwCameraSnapshotStrategy getEffectiveStrategy(Long cameraId);
    
    /**
     * 获取摄像头当前时间的抓图配置
     *
     * @param cameraId 摄像头ID
     * @return 抓图配置信息
     */
    SnapshotConfig getCurrentSnapshotConfig(Long cameraId);
    
    /**
     * 判断当前时间是否应该抓图
     *
     * @param cameraId 摄像头ID
     * @return true-应该抓图, false-不应该抓图
     */
    boolean shouldSnapshotNow(Long cameraId);
    
    /**
     * 获取全局默认抓图策略
     *
     * @return 全局默认策略
     */
    HwCameraSnapshotStrategy getGlobalDefaultStrategy();
    
    /**
     * 判断摄像头距离上次抓图是否已达到间隔时间
     *
     * @param cameraId 摄像头ID
     * @param intervalSeconds 间隔秒数
     * @return true-已达到间隔, false-未达到间隔
     */
    boolean hasReachedInterval(Long cameraId, int intervalSeconds);
}

